nginx 不记录指定文件类型的日志

        先看看 nginx 日志相关配置

1.日志格式

        在 nginx.conf 中定义日志格式

1
[root@lnmp ~]# vim /usr/local/nginx/conf/nginx.conf

        配置如下:

1
2
3
log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]'
'$host "$request_uri" $status'
'"$http_referer" "$http_user_agent"';

        说明:remote_addr 表示远程的 ip ;http_x_forwarded_for 表示代理的 ip ;time_local 表示时间;host 表示域名;request_uri 表示访问的地址;status 表示状态码;http_referer 表示referer ; http_user_agent 表示user_agent用户代理;

        这个格式该怎么去使用,在虚拟主机配置文件

1
[root@lnmp ~]# vim /usr/local/nginx/conf/vhosts/123.conf

        添加内容

1
access_log /tmp/access.log combined_realip;

1
2
3
[root@lnmp ~]# service nginx configtest
[root@lnmp ~]# service nginx reload
[root@lnmp ~]# curl -x127.0.0.1:80 www.123.com/1234 -I

        这样 /tmp 下就会生成 access.log

        下面的日志格式,会记录代理的 ip 和 真实客户端真实 ip ,建议使用

1
2
3
log_format combined_realip '$proxy_add_x_forwarded_for - $remote_user [$time_local]'
'"$request" $status $body_byres_sent'
'"$http_referer" "$http_user_agent"';

2.错误日志 error_log 日志级别

        在常见的502中已经提到过这个概念。error_log 级别分为 debug,info,notice,warn,error,crit 默认为 crit ,该级别在日志名后边定义格式如下:

1
error_log /usr/local/nginx/logs/nginx_error.log crit;

        crit 记录的日志最少,而 debug 记录的日志最多。如果 nginx 遇到一些问题,比如 502 比较频繁出现,但是看默认的 error_log 并没有看到有意义的信息,那么就可以调一下错误日志的级别,当调成 error 级别时,错误日志记录的内容会更加丰富。

3.某些类型的文件不记录日志

        修改虚拟主机配置文件

1
[root@lnmp ~]# vim /usr/local/nginx/conf/vhosts/123.conf

        配置内容:

1
2
3
4
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$
{
access.log off;
}

        这样就不会记录以上类型的日志,其实 static 和cache 的相关日志也可以禁止